home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d6 / glazer.arc / DATEDIST.BAS < prev    next >
BASIC Source File  |  1988-10-07  |  2KB  |  53 lines

  1. 100 'Time between dates in years, months, days ("DATEDISTANCE")
  2. 110 CLS
  3. 120 COLOR 0,15 : PRINT "Date Distance" : COLOR 15,0
  4. 130 PRINT
  5. 140 '     Let user enter dates
  6. 150 GOSUB 1000     'Get number of days in months
  7. 160 PRINT "Enter starting date"
  8. 170 GOSUB 2000     'Get starting date
  9. 180 SMONTH = MONTH : SDAY = DAY : SYEAR = YEAR
  10. 190 PRINT
  11. 200 PRINT "Enter ending date"
  12. 210 GOSUB 2000     'Get ending date
  13. 220 EMONTH = MONTH : EDAY = DAY : EYEAR = YEAR
  14. 230 PRINT
  15. 240 '     Ending day at or after starting day
  16. 250 IF EDAY >= SDAY  THEN TOTALDAYS = EDAY - SDAY
  17. 260 '     Ending day before starting day
  18. 270 PREVMONTH = EMONTH - 1
  19. 280 IF PREVMONTH = 0  THEN PREVMONTH = 12
  20. 290 IF EDAY < SDAY  THEN TOTALDAYS = EDAY + NDAYS (PREVMONTH) - SDAY
  21. 300 '     Find number of elapsed months
  22. 310 TOTALMONTHS = 12 * (EYEAR - SYEAR) + EMONTH - SMONTH
  23. 320 IF EDAY < SDAY  THEN TOTALMONTHS = TOTALMONTHS - 1
  24. 330 TOTALYEARS = TOTALMONTHS \ 12
  25. 340 TOTALMONTHS = TOTALMONTHS - 12 * TOTALYEARS
  26. 350 '     Print results
  27. 360 PRINT "Years: ", TOTALYEARS
  28. 370 PRINT "Months: ", TOTALMONTHS
  29. 380 PRINT "Days: ", TOTALDAYS"
  30. 390 END
  31. 990 '     Subroutine to set up list with number of days in months
  32. 1000 DIM NDAYS(12)
  33. 1010 FOR N = 1 TO 12
  34. 1020   READ NDAYS(N)
  35. 1030 NEXT N
  36. 1040 'Number of days in months
  37. 1050 DATA 31, 28, 31, 30
  38. 1060 DATA 31, 30, 31, 31
  39. 1070 DATA 30, 31, 30, 31
  40. 1080 RETURN
  41. 1990 '     Subroutine to let user enter date
  42. 2000 INPUT "Month (1-12): ", MONTH
  43. 2010 IF (MONTH < 1) OR (MONTH > 12)  THEN PRINT " *No such month *": GOTO 2000
  44. 2020 INPUT "Day (1-31): ", DAY
  45. 2030 INPUT "Year: ", YEAR
  46. 2040 IF (YEAR < 1900) OR (YEAR > 2100)  THEN PRINT "Invalid year": GOTO 2000
  47. 2050 'Check for leap year
  48. 2060 IF (YEAR MOD 4) = 0 AND (YEAR MOD 100) <> 0  THEN NDAYS(2) = 29
  49. 2070 IF (YEAR MOD 400) = 0  THEN NDAYS(2) = 29
  50. 2080 'Check for valid date
  51. 2090 IF DAY > NDAYS(MONTH)  THEN PRINT "* No such day *": GOTO 2000
  52. 2100 RETURN
  53.